package com.ybkj.o2o.zhuanche.service;

import org.apache.ibatis.session.RowBounds;

import java.util.List;

public interface BaseService<T, Q, K> {

  /**
   * 根据主键查询数据.
   */
  
  T fetch(K primaryKey);

  /**
   * 根据主键删除数据.
   * @return 返回受影响的行数
   */
  
  int delete(K primaryKey);

  /**
   * 查询所有的数据.
   */
  
  List<T> findAll();

  /**
   * 分页查询所有数据.
   */
  
  List<T> findAll(RowBounds rowBounds);

  /**
   * 统计所有的记录数.
   */
  
  long count();

  /**
   * 根据主键更新对象所有字段.
   * @return 返回受影响的行数
   */
  
  int update(T templet);

  /**
   * 根据主键更新对象的所有字段.
   * @return 返回受影响的行数
   */
  
  int updateIngoreNull(T templet);

  /**
   * 保存数据.
   * @return 返回受影响的行数
   */
  
  int insert(T templet);
}
